﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

using MySql.Data.MySqlClient;

namespace MakeIT.MiraPark.Negocios
{
    public static partial class ModelBO
    {

        public static void getTabelaAvulsoXPeriodos( TabelaAvulsoVO tabelaAvulsoVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("SELECT IdTabelaAvulsoP, IdTabelaAvulso, Minutos, Valor, Acumula ");
            query.AppendLine("FROM tabelaavulsop ");
            query.AppendLine("WHERE IdTabelaAvulso = ?IdTabelaAvulso ");
            query.AppendLine("ORDER BY IdTabelaAvulso, IdTabelaAvulsoP ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdTabelaAvulso", tabelaAvulsoVO.idTabelaAvulso);

            MySqlDataReader reader = null;
            try
            {
                cmd.Connection.Open();

                reader = cmd.ExecuteReader();

                tabelaAvulsoVO.tabelaAvulsoPVOs.Clear();

                while (reader.Read())
                {
                    TabelaAvulsoPVO tabelaAvulsoPVO = TabelaAvulsoPVO.CreateTabelaAvulsoPVO();
                    tabelaAvulsoPVO.idTabelaAvulso = reader.GetInt32("IdTabelaAvulso");
                    tabelaAvulsoPVO.idTabelaAvulsoP = reader.GetInt32("IdTabelaAvulsoP");
                    tabelaAvulsoPVO.minutos = reader.GetInt32("Minutos");
                    tabelaAvulsoPVO.valor = reader.GetDecimal("Valor");
                    tabelaAvulsoPVO.acumula = reader.GetBoolean("Acumula");

                    tabelaAvulsoVO.tabelaAvulsoPVOs.Add(tabelaAvulsoPVO);
                }
                reader.Close();
            }
            catch (Exception ex){ throw ex; }
            finally { cmd.Connection.Close(); }
        }

        public static void setTabelaAvulsoXPeriodos(List<TabelaAvulsoPVO> tabelaAvulsoPVOs)
        {
            foreach (TabelaAvulsoPVO tabelaAvulsoPVO in tabelaAvulsoPVOs)
            {
                setTabelaAvulsoXPeriodo(tabelaAvulsoPVO);
            }
        }
        public static void setTabelaAvulsoXPeriodo(TabelaAvulsoPVO tabelaAvulsoPVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("UPDATE tabelaavulsop ");
            query.AppendLine("SET IdTabelaAvulso=?IdTabelaAvulso, Minutos=?Minutos, Valor=?Valor, Acumula=?Acumula ");
            query.AppendLine("WHERE IdTabelaAvulsoP=?IdTabelaAvulsoP and IdTabelaAvulso=?IdTabelaAvulso ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdTabelaAvulsoP", tabelaAvulsoPVO.idTabelaAvulsoP);
            cmd.Parameters.AddWithValue("?IdTabelaAvulso", tabelaAvulsoPVO.idTabelaAvulso);
            cmd.Parameters.AddWithValue("?Minutos", tabelaAvulsoPVO.minutos);
            cmd.Parameters.AddWithValue("?Valor", tabelaAvulsoPVO.valor);
            cmd.Parameters.AddWithValue("?Acumula", tabelaAvulsoPVO.acumula);

            try
            {
                cmd.Connection.Open();

                cmd.ExecuteNonQuery();
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }

        }

        public static void newTabelaAvulsoXPeriodos(List<TabelaAvulsoPVO> tabelaAvulsoPVOs)
        {
            foreach (TabelaAvulsoPVO tabelaAvulsoPVO in tabelaAvulsoPVOs)
            {
                newTabelaAvulsoXPeriodo(tabelaAvulsoPVO);
            }
        }
        public static long newTabelaAvulsoXPeriodo(TabelaAvulsoPVO tabelaAvulsoPVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("INSERT INTO tabelaavulsop ");
            query.AppendLine("SET IdTabelaAvulsoP=?IdTabelaAvulsoP, IdTabelaAvulso=?IdTabelaAvulso, Minutos=?Minutos, Valor=?Valor, Acumula=?Acumula ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdTabelaAvulsoP", tabelaAvulsoPVO.idTabelaAvulsoP);
            cmd.Parameters.AddWithValue("?IdTabelaAvulso", tabelaAvulsoPVO.idTabelaAvulso);
            cmd.Parameters.AddWithValue("?Minutos", tabelaAvulsoPVO.minutos);
            cmd.Parameters.AddWithValue("?Valor", tabelaAvulsoPVO.valor);
            cmd.Parameters.AddWithValue("?Acumula", tabelaAvulsoPVO.acumula);

            try
            {
                cmd.Connection.Open();

                cmd.ExecuteNonQuery();
                return cmd.LastInsertedId;
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }

        }

        public static void delTabelaAvulsoXPeriodos(List<TabelaAvulsoPVO> tabelaAvulsoPVOs)
        {
            foreach (TabelaAvulsoPVO tabelaAvulsoPVO in tabelaAvulsoPVOs)
            {
                delTabelaAvulsoXPeriodo(tabelaAvulsoPVO);
            }
        }
        public static void delTabelaAvulsoXPeriodo(TabelaAvulsoPVO tabelaAvulsoPVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("DELETE FROM tabelaavulsop ");
            query.AppendLine("WHERE IdTabelaAvulsoP=?IdTabelaAvulsoP and IdTabelaAvulso=?IdTabelaAvulso ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdTabelaAvulsoP", tabelaAvulsoPVO.idTabelaAvulsoP);
            cmd.Parameters.AddWithValue("?IdTabelaAvulso", tabelaAvulsoPVO.idTabelaAvulso);

            try
            {
                cmd.Connection.Open();

                cmd.ExecuteNonQuery();
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }

        }
    }
}
